package com.fdd.op.sdk.request.api.otherverify;

import com.fdd.op.sdk.ApiRuleException;
import com.fdd.op.sdk.BaseFddRequest;
import com.fdd.op.sdk.constants.Constants;
import com.fdd.op.sdk.internal.mapping.RequestField;
import com.fdd.op.sdk.model.*;
import com.fdd.op.sdk.response.api.otherverify.PersonOtherVerifyResponse;

import java.util.Date;
import java.util.Map;

public class PersonOtherVerifyRequest extends BaseFddRequest<PersonOtherVerifyResponse> {
    @Override
    public String getApiMethodName() {
        return "/user/api/otherVerify/personOtherVerify";
    }

    @Override
    public Map<String, Object> getTextParams() {
        return null;
    }

    @Override
    public Class<PersonOtherVerifyResponse> getResponseClass() {
        return PersonOtherVerifyResponse.class;
    }

    @Override
    public void check() throws ApiRuleException {

    }

    @Override
    public String getHttpMethod() {
        return Constants.METHOD_POST;
    }

    @RequestField(value = "用户在当前系统的唯一标识")
    private String accountId;

    @RequestField(value = "用户在第三方业务系统的唯一标识")
    private String tpAccountId;

    @RequestField(value = "是否重新自认证，1-首次自认证，2-重新自认证  默认为1")
    private Integer isRepeat;

    @RequestField(value = "存证数据提供方")
    private String preservationDataProvider;

    @RequestField(value = "银行卡号 verifiedType=3,verifiedType=4必填")
    private String bankNo;

    @RequestField(value = "实名流水号")
    private String verifiedSerialNo;

    @RequestField(value = "姓名")
    private String name;

    @RequestField(value = "证件类型 0:身份证; 1:护照 B:港澳居民来往内地通行证 ; C:台湾居民来往大陆通行证")
    private String documentType;

    @RequestField(value = "证件号")
    private String idCard;

    @RequestField(value = "证件照正面uuid（调用资源维护接口返回的uuid）")
    private String idCardPositiveFile;

    @RequestField(value = "证件照反面uuid（调用资源维护接口返回的uuid）")
    private String idCardNegativeFile;

    @RequestField(value = "手机号")
    private String mobile;

    @RequestField("实名时间  格式：yyyy-MM-dd HH:mm:ss")
    private Date verifiedTime;

    @RequestField(value = "实名存证类型 2:手机三要素(姓名 +身份证+手机号);3:银行 卡三要素(姓名+身份证+ 银行卡);4:四要素(姓名+ 身份证+手机号+银行 卡);5:腾讯云（姓名+身份 证号码+手机号+刷脸交易 号）;6:蚂蚁金服（姓名+ 身份证号码+手机号+刷脸 交易号）")
    private Integer verifiedType;

    @RequestField(value = "verifiedType=2 手机三要素")
    private MobileEssentialFactorModel mobileEssentialFactor;

    @RequestField(value = "verifiedType=3 银行卡三要素")
    private BankEssentialFactorModel bankEssentialFactor;

    @RequestField(value = "verifiedType=4 四要素")
    private MobileAndBankEssentialFactorModel mobileAndBankEssentialFactor;

    @RequestField(value = "verifiedType=5 腾讯云")
    private TencetCloudInfoModel tencetCloudInfo;

    @RequestField(value = "verifiedType=6 蚂蚁金服")
    private AntFinancialInfoModel antFinancialInfo;

    @RequestField(value = "唯一流水号，必须32位")
    private String serialNo;

    public String getAccountId() {
        return accountId;
    }

    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    public String getTpAccountId() {
        return tpAccountId;
    }

    public void setTpAccountId(String tpAccountId) {
        this.tpAccountId = tpAccountId;
    }

    public Integer getIsRepeat() {
        return isRepeat;
    }

    public void setIsRepeat(Integer isRepeat) {
        this.isRepeat = isRepeat;
    }

    public String getPreservationDataProvider() {
        return preservationDataProvider;
    }

    public void setPreservationDataProvider(String preservationDataProvider) {
        this.preservationDataProvider = preservationDataProvider;
    }

    public String getBankNo() {
        return bankNo;
    }

    public void setBankNo(String bankNo) {
        this.bankNo = bankNo;
    }

    public String getVerifiedSerialNo() {
        return verifiedSerialNo;
    }

    public void setVerifiedSerialNo(String verifiedSerialNo) {
        this.verifiedSerialNo = verifiedSerialNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDocumentType() {
        return documentType;
    }

    public void setDocumentType(String documentType) {
        this.documentType = documentType;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getIdCardPositiveFile() {
        return idCardPositiveFile;
    }

    public void setIdCardPositiveFile(String idCardPositiveFile) {
        this.idCardPositiveFile = idCardPositiveFile;
    }

    public String getIdCardNegativeFile() {
        return idCardNegativeFile;
    }

    public void setIdCardNegativeFile(String idCardNegativeFile) {
        this.idCardNegativeFile = idCardNegativeFile;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Date getVerifiedTime() {
        return verifiedTime;
    }

    public void setVerifiedTime(Date verifiedTime) {
        this.verifiedTime = verifiedTime;
    }

    public Integer getVerifiedType() {
        return verifiedType;
    }

    public void setVerifiedType(Integer verifiedType) {
        this.verifiedType = verifiedType;
    }

    public MobileEssentialFactorModel getMobileEssentialFactor() {
        return mobileEssentialFactor;
    }

    public void setMobileEssentialFactor(MobileEssentialFactorModel mobileEssentialFactor) {
        this.mobileEssentialFactor = mobileEssentialFactor;
    }

    public BankEssentialFactorModel getBankEssentialFactor() {
        return bankEssentialFactor;
    }

    public void setBankEssentialFactor(BankEssentialFactorModel bankEssentialFactor) {
        this.bankEssentialFactor = bankEssentialFactor;
    }

    public MobileAndBankEssentialFactorModel getMobileAndBankEssentialFactor() {
        return mobileAndBankEssentialFactor;
    }

    public void setMobileAndBankEssentialFactor(MobileAndBankEssentialFactorModel mobileAndBankEssentialFactor) {
        this.mobileAndBankEssentialFactor = mobileAndBankEssentialFactor;
    }

    public TencetCloudInfoModel getTencetCloudInfo() {
        return tencetCloudInfo;
    }

    public void setTencetCloudInfo(TencetCloudInfoModel tencetCloudInfo) {
        this.tencetCloudInfo = tencetCloudInfo;
    }

    public AntFinancialInfoModel getAntFinancialInfo() {
        return antFinancialInfo;
    }

    public void setAntFinancialInfo(AntFinancialInfoModel antFinancialInfo) {
        this.antFinancialInfo = antFinancialInfo;
    }

    public String getSerialNo() {
        return serialNo;
    }

    public void setSerialNo(String serialNo) {
        this.serialNo = serialNo;
    }
}
